const express = require('express');
const router = express.Router()
const UserModel = require('../db/models/UserModel')
const md5 = require('md5');
const {
    RES_CODE
} = require('../utils/constants');
const {
    createToken
} = require('../utils/tokenUtils');
const verifyToken = require('../middlewares/verifyToken');
/* 
整体3步
1. 读取参数数据
2. 处理数据(操作数据库)
3. 返回响应
router.post(path, middleware1, middleware2)
*/

//注册登录路由
router.post('/login', async (req, res,next) => {
    //读取参数
    const {
        username,
        pwd
    } = req.body
    try {
        // 根据username和pwd查询对应的user
        const user = await UserModel.findOne({
            username,
            pwd: md5(pwd)
        })
        // 如果没有, 返回提示登陆失败的信息
        if (!user) {
            return res.json({
                code: RES_CODE.DATA_ERROR,
                message: '用户名或密码错误'
            })
        }
        // 如果有, 根据user的id生成token, 返回包含token和user的数据
        const token = createToken(user._id);
        res.json({
            code: RES_CODE.SUCCESS,
            data: {
                token,
                user
            },
            message: '登录成功'
        });
    } catch (error) {
        console.log(error)
        res.send({
            code: RES_CODE.SERVER_ERROR,
            message: '服务器异常!'
        })
    }
})

/* 
获取登陆用户信息
*/
router.get('/info',verifyToken, async (req, res) => {

        //得到userId
        const userId = req.userId;
        // 根据userId查询得到对应的user, 返回包含用户信息的成功的成功响应
        const user = await UserModel.findById(userId)
        res.json({
            code: RES_CODE.SUCCESS,
            data: user,
            message: '获取登录用户成功'
        })
    
})

/* 
退出登陆的接口
*/
router.get('/logout', verifyToken, (req, res) => {
  // 清除保存在后台的当前用户的一些数据  当前没有

    //返回响应
    res.json({
        code: RES_CODE.SUCCESS,
        message:'退出成功!'
    })
})
module.exports = router;